Fix: Pagination to consider limit value while .all() will keep returning all records#281
Closed
iamvishalkhare wants to merge 2 commits intoredis:mainfrom
Closed
Fix: Pagination to consider limit value while .all() will keep returning all records#281iamvishalkhare wants to merge 2 commits intoredis:mainfrom
iamvishalkhare wants to merge 2 commits intoredis:mainfrom
Conversation
Problem? Often time in production we don't want to return all matching records instead returning a paginated response based on values of limit and offset is desirable. What is being fixed? Even after setting a limit value it was not working and .all() or .execute() function were returning complete set of records matching the search criterion. How is it fixed? To break away from loop executing the query a condition is added wherein if total number of fetched records is equal or greater than limit. If no limit is provided, default value i.e. 10 records will be returned.
Author
|
@simonprickett - Any input is appreciated |
Contributor
|
@dvora-h can you please have a look? |
chayim
reviewed
Sep 1, 2022
| _results = await query.execute(exhaust_results=False) | ||
| if not _results: | ||
| break | ||
| if exhaust_results: |
Contributor
There was a problem hiding this comment.
Can these two statements combine?
break
There was a problem hiding this comment.
Doesn't seem important enough to block merging this. @chayim Can you approve?
Or would you like me to create a new PR?
Collaborator
|
Closing this PR due to staleness (30 months). Looking at the current implementation, the behavior appears to be by design:
The If you're still experiencing issues with pagination, please open a new issue with your specific use case. Thank you @iamvishalkhare for the contribution! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pagination fix
Problem?
Often times in production we don't want to return all matching records instead returning a paginated response based on values of limit and offset is desirable.
What is being fixed?
Calling
.all()will keep returning all records matching the search criterion whereas if you set value oflimitand then call.execute()withexhaust_results=Falseparameter, It will return number of records equal to value oflimit.Usage-
Let us consider 3 scenarios-
Scenario 1
This will return first 5 records matching search criterion.
Scenario 2
This will return all records matching search criterion.
Scenario 3
This will return top 10 records matching search criterion because default value of
limitis 10How is it fixed?
To break away from loop executing the query a condition is added wherein if total number of fetched records is equal or greater than limit. (see file changes)